import CryptoJS from 'crypto-js';

// 定义密钥
const keyStr = "XXLhYQGwHEvZIzdq"; // 确保密钥长度符合要求（16, 24, 或 32 字节）
const key = CryptoJS.enc.Utf8.parse(keyStr);

/**
 * 加密函数
 * @param {string} data - 需要加密的数据
 * @return {string} - 加密后的 Base64 字符串
 */
export function Encrypt(data) {
  try {
    // 执行加密操作
    const cipher = CryptoJS.AES.encrypt(data, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });

    // 返回 Base64 编码的加密字符串
    return cipher.toString();
  } catch (e) {
    console.error('Encryption error:', e);
    throw new Error(`Encryption failed: ${e.message}`);
  }
}

/**
 * 解密函数
 * @param {string} encrypted - 加密的数据
 * @return {string} - 解密后的 UTF8 字符串
 */
export function Decrypt(encrypted) {
  try {
    // 解密操作
    const decipher = CryptoJS.AES.decrypt(encrypted, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });

    // 将解密对象转换成 UTF8 的字符串并返回
    return decipher.toString(CryptoJS.enc.Utf8).trim();
  } catch (e) {
    console.error('Decryption error:', e);
    throw new Error(`Decryption failed: ${e.message}`);
  }
}